有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java将图像旋转到“指向”鼠标位置

我有一个坦克图像上面的枪图像。我想让枪指向鼠标的位置,这样鼠标就可以用来瞄准了。原始枪图像将指向上方。我使用的是Slick2D,它的image类有一个旋转函数,它有一个角度。我该怎么做呢


共 (3) 个答案

  1. # 1 楼答案

    以上述答案为基础

    由于y轴正在减小,请尝试:

    float deltaX = mouse.x - tank.x;
    float deltaY = tank.y - mouse.y;
    
  2. # 2 楼答案

    通过询问输入对象,可以找到用户鼠标的位置。这是通过向GameContainer请求输入来完成的

    Input userInput = gameContainer.getInput();
    float mouseX = userInput.getMouseX();
    float mouseY = userInput.getMouseY();
    

    鼠标和枪的位置可用于确定枪需要面对的角度。我们可以想象在枪和鼠标之间画一条线,然后找到这条线的角度。此角度是枪需要面对的角度,以便“指向”鼠标

    Vector2f gunLocation = gun.getLocation();
    float xDistance = mouseX - gunLocation.x;
    float yDistance = mouseY - gunLocation.y;
    double angleToTurn = Math.toDegrees(Math.atan2(yDistance, xDistance));
    gunImage.setRotation((float)angleToTurn);
    
  3. # 3 楼答案

    瞄准是这样做的:

    从水箱到鼠标的方向如下:

    float deltaX = mouse.x - tank.x;
    float deltaY = mouse.y - tank.y;
    
    // The resulting direction
    return (int) (360 + Math.toDegrees(Math.atan2(deltaY, deltaX))) % 360;
    

    只需将坦克的方向更新到当前鼠标位置,例如在mouseMoved事件中

    旋转图像:

    看看堆栈溢出或java文档:"Graphics2D", "affine transform", "translation"。也许您的引擎已经提供了一些库函数

    希望有帮助